package corn

import (
	"context"
	"fmt"
	"time"
	"yunj/pkg/yunj/core/corn"
	"yunj/pkg/yunj/core/enum/cornenum"
)

// 实现TaskInterface接口
type tests struct {
	corn.Task
}

var Tests = func() *tests {
	task := &tests{}
	task.Task.InitTaskInstance(task)
	return task
}()

// 名称
func (t *tests) Name() string {
	return "tests"
}

// 描述
func (t *tests) Desc() string {
	return "测试任务"
}

// 执行时间
func (t *tests) Spec() string {
	return "*/2 * * * * *"
}

// 超时时间
func (t *tests) Timeout() time.Duration {
	return 5 * time.Second
}

// 定义默认的处理状态（没有配置数据库状态时应用）
func (t *tests) DefaultHandleStatus() uint8 {
	return cornenum.TASK_STATUS_PAUSED
}

// 任务处理函数
func (t *tests) Handler(ctx context.Context) (err error) {
	// 步骤1: 检查是否已取消
	if err = ctx.Err(); err != nil {
		return
	}
	// panic("测试异常")
	fmt.Println("测试定时任务...")

	// 步骤2: 执行第一个操作
	// fmt.Println("执行操作1...")
	// time.Sleep(1 * time.Second)

	// // 步骤3: 再次检查是否已取消
	// if err := ctx.Err(); err != nil {
	// 	return err
	// }

	// // 步骤4: 执行第二个操作
	// fmt.Println("执行操作2...")
	// time.Sleep(1 * time.Second)

	// // 步骤5: 再次检查是否已取消
	// if err := ctx.Err(); err != nil {
	// 	return err
	// }

	// // 步骤6: 执行第二个操作
	// fmt.Println("执行操作3...")
	// time.Sleep(1 * time.Second)

	// // 步骤7: 最后检查是否已取消
	// if err := ctx.Err(); err != nil {
	// 	return err
	// }

	// panic("未知错误123")
	// return fmt.Errorf("未知错误123")

	// fmt.Println("任务完成")
	// return nil

	// fmt.Println("测试定时任务执行开始...")
	// time.Sleep(6 * time.Second)
	// fmt.Println("测试定时任务执行中...")
	// err = queue.Tests.Push("测试消息123")
	// if err != nil {
	// 	fmt.Println("测试队列消息推送异常：", err)
	// }
	// time.Sleep(2 * time.Second)
	return
}
